#ifndef QUOTE_LEVEL_DATA_H
#define QUOTE_LEVEL_DATA_H
#include "Tools.h"
#include "QuoteLvDef.h"

///证券类型
enum STOCK_STYLE_tag {
  ///okex
  STOCK_STYLE_INDEX=1,
  ///个股
  STOCK_STYLE_STOCK,
  ///基金
  STOCK_STYLE_FUND,
  ///债券
  STOCK_STYLE_BONDS,
  ///权证
  STOCK_STYLE_WARRANTS,
  ///股指期货
  STOCK_STYLE_FUTURES_STOCK=9,
  /// 港股通
  STOCK_MARKET_HGT = 24,
};

///市场类型
enum STOCK_MARKET_tag {
  ///上海
  STOCK_MARKET_SH=1,
  ///深圳
  STOCK_MARKET_SZ=2,
  ///香港
  STOCK_MARKET_HK=6,
  ///股指期货
  STOCK_MARKET_FUTURES_STOCK=7,
};

//imuse 添加市场开闭市时间 start
///交易市场开闭市最大市场个数
#define MARKET_TRADING_MAX	32

///开闭市单个市场时间结构
typedef struct QUOTELV_TRADING_HOURS_ITEM_tag
{
  //<Market firstclose="1130" firstopen="0930" id="1" midscale="1130" secondclose="1500" secondopen="1300"/>
  ///第1次开盘时间
  int firstOpen;
  ///第1次闭盘时间
  int firstClose;
  ///第2次开盘时间
  int secodeOpen;
  ///第2次闭盘时间
  int secodeClose;
  ///市场id
  int marketID;
  ///中间时间刻度
  int midscale;
  
  int minuteCount;	/*分钟点个数*/
}QUOTELV_TRADING_HOURS_ITEM;

///开闭市全部市场结构
typedef struct QUOTELV_TRADING_HOURS_tag
{
  ///最大开市分钟数
  int maxMinuteCount;
  ///市场个数
  int nMarketNum;
  ///单个市场数组
  QUOTELV_TRADING_HOURS_ITEM	marketTrading[MARKET_TRADING_MAX];
}QUOTELV_TRADING_HOURS;
//imuse 添加市场开闭市时间 end

///行情协议头
typedef struct QUOTELV_HEAD_tag
{
  ///包类型	1 byte	1：全数据包 2：部分数据包
  char				type;
  ///seq		2 byte	0：非订阅，1：订阅
  unsigned short		seq;
  ///版本号	1 byte	协议版本号（默认0x05）
  char				ver;
  ///请求共跟那个类型
  char				funcid;
  ///终端语言	1 byte	终端语言(1:简体中文，2:英文，3:繁体中文)
  char				language;
  ///订阅id，主动请求包id为0，订阅包>0
  unsigned short		subid;
}QUOTELV_HEAD;

/**生成行情包头
 *
 *  @param QUOTELV_HEAD *pAskHead	包头指针
 *  @param char         *pDst       生成后存放数据的缓存指针
 *
 *  @return －
 */
void QuoteDataLV_PackAskHead(QUOTELV_HEAD *pAskHead, char *pDst);


//========================================================================================
//解析数据字典结构
//========================================================================================

#define QUOTELV_DICT_POINT_LEN		39

///数据字典请求包
typedef struct QUOTELV_DICT_ASK_tag
{
  ///版本数据长度
  short				len;
  /////版本数据
  char				*pverdata;
  
}QUOTELV_DICT_ASK;

///数据字典应答包
typedef struct QUOTELV_DICT_RES_tag
{
  ///版本数据长度
  unsigned short		sVerLen;
  ///版本数据
  char				*pVerData;
  ///更新点结构数量
  unsigned short		sCount;
  ///字典数据
  char				*pDictdata;
  ///字典数据长度
  int					nDictLen;
}QUOTELV_DICT_RES;

/**解析报价数据结构
 *
 *  @param char      *aSrc					数据源
 *  @param QUOTELV_PRICE_RES *aPriceRes	报价数据结构
 *
 *  @return -
 */
void QuoteDataLV_ParseDictData(char *aSrc, QUOTELV_DICT_RES *aDictRes);

//========================================================================================
//股票信息结构
//========================================================================================
///股票信息结构
typedef struct CODELV_INFO_tag
{
  /// 6 byte 股票代码
  char	code[CODELV_LEN+1];
  /// 24 byte 股票名称
  char	name[NAMELV_LEN+1];
  /// 1byte 保留小数位数
  char    decNum;
  /// 1byte 市场 1:上海 2:深圳 6:港股 7:股指期货 8:新三板 22:B股转H股 24:沪港通
  char	market;
  /// 1byte 类型 1:okex 2:股票 3:基金 4:债券 5:权证
  char	style;
}CODELV_INFO;

/**解析股票信息结构
 *
 *  @param char				*aSrc					数据源
 *  @param CODELV_INFO			*aInfo					股票信息结构指针
 *  @param int					&nPos					数据偏移量
 *
 *  @return -
 */
void QuoteDataLV_ParseStockInfo(char *aSrc, CODELV_INFO *aInfo, int *nPos);

//========================================================================================

//========================================================================================
//定制股票点结构（用于自选股，排行，报价）
//========================================================================================
///定制股票点结构（用于自选股，排行，报价）
typedef struct QUOTELV_STOCK_POINT_tag
{
  ///股票代码
  CODELV_INFO			codeinfo;
  //===============================================================
  ///代码+市场代码
  char				code[CODELV_LEN+1];
  ///市场代码
  char				maketId;
  //===============================================================
  ///日期
  int					nDate;
  ///时间
  int					nTime;
  /// 4 byte 昨日收盘价
  float				fPre;
  /// 4 byte 今开盘价格
  float				fOpen;
  /// 4 byte 最高价
  float				fHigh;
  /// 4 byte 最低价
  float 				fLow;
  /// 4 byte 最新价
  float				fCur;
  /// 8 byte 成交数量（以手为单位）
  long64				lVol;
  /// 8 byte 现手数量（以手为单位）
  long64				lCurVol;
  /// 8 byte 成交额
  long64				lSum;
  /// 4 byte 申卖价一（当前卖出价）
  float 				fBid;
  ///// 4 byte 申买价一（当前买入价）
  float 				fAsk;
  /// 8 byte 申卖量一
  long64				lBidVol1;
  /// 8 byte 申买量一
  long64				lAskVol1;
  /// 4 byte 申卖价二
  float				fBidPri2;
  /// 4 byte 申买价二
  float				fAskPri2;
  /// 8 byte 申卖量二
  long64				lBidVol2;
  /// 8 byte 申买量二
  long64				lAskVol2;
  /// 4 byte 申卖价三
  float				fBidPri3;
  /// 4 byte 申买价三
  float				fAskPri3;
  /// 8 byte 申卖量三
  long64				lBidVol3;
  /// 8 byte 申买量三
  long64				lAskVol3;
  /// 4 byte 申买价四
  float				fAskPri4;
  /// 4 byte 申卖价四
  float				fBidPri4;
  /// 8 byte 申卖量四
  long64				lBidVol4;
  /// 8 byte 申买量四
  long64				lAskVol4;
  /// 4 byte 申卖价五
  float				fBidPri5;
  /// 4 byte 申买价五
  float				fAskPri5;
  /// 8 byte 申卖量五
  long64				lBidVol5;
  /// 8 byte 申买量五
  long64				lAskVol5;
  /// 8 byte 外盘
  long64				lOutSide;
  /// 4 byte 量比
  int					nVolRate;
  /// 4 byte 涨跌幅
  int					nDifRange;
  /// 4 byte 涨跌额
  float				fDiff;
  /// 4 byte 5分钟涨跌幅
  int					n5DifRange;
  /// 4 byte 换手率
  int 				nSwap;
  /// 4 byte 委比
  int					nWeiBi;
  /// 4 byte 委差
  long64				lWeiCha;
  /// 4 byte 市盈率
  int					nExePrice;
  /// 4 byte 振幅
  int					nAmplitude;
  /// 4 byte 均价
  float				fAvgPrice;
  /// 8 byte 5日均量
  long64				n5DaysAvgVolume;
  /// 4 byte 每股净收益
  int					nEps;
  /// 8 byte 流通股本
  long64				lFloatShare;
  /// 8 byte 内盘（内盘 = 总量 - 外盘）
  long64				lInSide;
  /// 4 byte 申卖价六
  float				fBidPri6;
  /// 4 byte 申买价六
  float				fAskPri6;
  /// 8 byte 申卖量六
  long64				lBidVol6;
  /// 8 byte 申买量六
  long64				lAskVol6;
  /// 4 byte 申卖价七
  float				fBidPri7;
  /// 4 byte 申买价七
  float				fAskPri7;
  /// 8 byte 申卖量七
  long64				lBidVol7;
  /// 8 byte 申买量七
  long64				lAskVol7;
  /// 4 byte 申买价八
  float				fAskPri8;
  /// 4 byte 申卖价八
  float				fBidPri8;
  /// 8 byte 申卖量八
  long64				lBidVol8;
  /// 8 byte 申买量八
  long64				lAskVol8;
  /// 4 byte 申卖价九
  float				fBidPri9;
  /// 4 byte 申买价九
  float				fAskPri9;
  /// 8 byte 申卖量九
  long64				lBidVol9;
  /// 8 byte 申买量九
  long64				lAskVol9;
  /// 4 byte 申卖价十
  float				fBidPri10;
  /// 4 byte 申买价十
  float				fAskPri10;
  /// 8 byte 申卖量十
  long64				lBidVol10;
  /// 8 byte 申买量十
  long64				lAskVol10;
  /// 4 byte 当前时间
  int					nCurTime;
  /// 2 byte 上涨家数 顺序
  short				upNum;
  /// 2 byte 平盘家数 顺序
  short				SameNum;
  /// 2 byte 下跌家数 顺序
  short				DownNum;
  /// 2 byte 上次上涨家数
  short				OldUpNum;
  /// 2 byte 上次平盘家数
  short				OldSameNum;
  /// 2 byte 上次下跌家数
  short				OldDownNum;
  /// 2 byte ??
  short				Rn;
  /// 2 byte ??
  short				Rn1;
  /// 2 byte ??
  short				Dn;
  /// 2 byte ??
  short				Dn1;
  /// 2 byte ??
  short				Rd;
  /// 4 byte 领先okex(pc端放大1000, 手机端放大10000倍)
  int					lIndex;
  /// 2 byte 红绿柱
  short				Rdp;
  /// 4 byte ??
  int					sTime;
  /// 4 byte ??
  long64				BlockId;
  /// 4 byte ??
  int					StockNum;
  
  /// 4 byte 周收盘价
  int					nWeekPre;
  /// 4 byte 周涨跌幅
  int					nWeekZdf;
  /// 4 byte 周开盘价
  int					nWeekOpen;
  /// 4 byte 周换手
  int					nWeekHS;
  /// 4 byte 上涨天数
  short				nWeekUpDay;
  /// 4 byte 下跌天数
  short				nWeekDonwDay;
  /// 4 byte 增减量
  long64				nWeekZjl;
  /// 4 byte 增减幅
  int					nWeekZjf;
  /// 4 byte 关注度
  int					nWeekGzd;
  /// 4 byte 5日涨跌幅
  int					nWeek5Zdf;
  /// 4 byte 10日涨跌幅
  int					nWeek10Zdf;
  /// 4 byte 收盘价
  int					nWeekSp;
  /// 8 byte 个股的板块id
  long64				BlockIdStock;
  /// 24 byte　个股板块名称
  char				BlockNameStock[NAMELV_LEN];
  /// 4 byte 个股板块涨跌幅
  int					nBlockDifRange;
  /// 8 byte 总委买
  long64			lTotalBidQty;
  /// 8 byte 总委卖
  long64			lTotalAskQty;
  /// 8 byte 总股本
  long64			lTotalShare;
  /// 4 byte 每股净资产
  float				nNetAssetPS;
  /// 4 byte 涨停
  float				nRiseLimitPrice;
  /// 4 byte 跌停
  float				nDecLimitPrice;
  //股指期货新增字段
  /// 8	昨持仓(如果是股指期货)
  long64	    lPreOpenInterest;
  /// 8	持仓量(如果是股指期货)
  long64			lOpenInterest;
  /// 4	结算价(如果是股指期货)（手机端扩大一万倍）
  float				fSettlePrice;
  /// 4	昨结算价(如果是股指期货) （手机端扩大一万倍）
  float				fPreSettlePrice;
  /// 4	基差(如果是股指期货) （手机端扩大一万倍）
  float				fPriceDiffer;
  /// 4	基差比率(如果是股指期货) （手机端扩大一万倍）
  float				fPriceDifferRatio;
  /// 4	增仓(如果是股指期货)
  int					nIncreasedOpenInterest;
  /// 8	日增仓(如果是股指期货)
  long64			lDayOpenInterest;
  
  
}QUOTELV_STOCK_POINT;

/**解析定制字段结构
 *
 *  @param char      *aSrc					数据源
 *  @param QUOTELV_STOCK_POINT *aStock		定制股票点结构
 *  @param int aIndex						定制字段索引
 *  @param int &aPos						数据源点的位置
 *
 *  @return -
 */
void QuoteDataLV_ParseStockPoint(char *aSrc, QUOTELV_STOCK_POINT *aStock, int aIndex, int *aPos);
//========================================================================================



//========================================================================================
//定制分时点结构（用于分时）
//========================================================================================
///定制分时点结构（用于分时）
typedef struct QUOTELV_MIN_POINT_tag
{
  ///最新价
  float				fPri;
  /// 8 byte 成交数量（以手为单位）
  long64				lVol;
  /// 8 byte 成交额
  long64				lSum;
  /// 4 byte 均价
  float				fAvgPrice;
  /// 4 byte 总委买
  long64				nTotalBuyVolume;
  /// 4 byte 总委卖
  long64				nTotalSellVolume;
  /// 2 byte 红绿柱
  short				Rdp;
  /// 8 byte 股指持仓量
  long64				Oit;
}QUOTELV_MIN_POINT;

/**解析定制字段结构
 *
 *  @param char      *aSrc					数据源
 *  @param QUOTELV_STOCK_POINT *aStock		定制股票点结构
 *  @param int aIndex						定制字段索引
 *  @param int &aPos						数据源点的位置
 *
 *  @return -
 */
void QuoteDataLV_ParseMinPoint(char *aSrc, QUOTELV_MIN_POINT *aMin, int aIndex, int *aPos, int nd, QUOTELV_MIN_POINT *aMinPre);

//非压缩
void QuoteDataLV_ParseMinPoint2(char *aSrc, QUOTELV_MIN_POINT *aMin, int aIndex, int *aPos);

//lisz add 20110916 start
///定制leve2分时点结构（用于分时）
typedef struct QUOTELV_LEVE2_MIN_POINT_tag
{
  ///小单成交额净量
  long64 lLittleAmountDiff;
  ///中单成交额净量
  long64 lMidAmountDiff;
  ///大单成交额净量
  long64 lBigAmountDiff;
  ///特大单成交额净量
  long64 lBiggerAmountDiff;
  ///主力成交量净量
  long64 lMainVolumeDiff;
}QUOTELV_LEVE2_MIN_POINT;

/**解析定制字段结构
 *
 *  @param char      *aSrc					数据源
 *  @param QUOTELV_STOCK_POINT *aStock		定制股票点结构
 *  @param int aIndex						定制字段索引
 *  @param int &aPos						数据源点的位置
 *
 *  @return -
 */
void QuoteDataLV_ParseLeve2MinPoint(char *aSrc,
                                    QUOTELV_LEVE2_MIN_POINT *aMin,
                                    int aIndex,
                                    int *aPos,
                                    QUOTELV_LEVE2_MIN_POINT *aMinPre);
//lisz add 20110916 end
//========================================================================================

//========================================================================================
//定制K线结构（用于K线）
//========================================================================================
///定制K线结构（用于K线）
typedef struct QUOTELV_K_POINT_tag
{
  /// 4 byte 日期
  int				nDate;
  /// 4 byte 今开盘价格
  float			fOpen;
  /// 4 byte 最高价
  float			fHigh;
  /// 4 byte 最低价
  float			fLow;
  /// 4 byte 最新价
  float			fCur;
  /// 8 byte 金额
  long64			lSum;
  /// 8 byte 成交数量
  long64			lVol;
  /// 4 byte 换手率
  float			fSwap;
  /// 8 byte 成交笔数
  long64			lCjbs;
  /// 4 byte 同周期大盘收盘价
  float			fIndexc;
  /// 8 byte k线周期
  long64			lKeyDate;
  
}QUOTELV_K_POINT;

/**解析K线结构
 *
 *  @param char					*aSrc	数据源
 *  @param QUOTELV_K_POINT			*aK		定制股票点结构
 *  @param int						&nPos	偏移量
 *
 *  @return -
 */
void QuoteDataLV_ParseKPoint(char *aSrc, QUOTELV_K_POINT *aK, int aIndex, int *aPos, int nd, QUOTELV_K_POINT *aKPre);//压缩


void QuoteDataLV_ParseKPoint2(char *aSrc, QUOTELV_K_POINT *aK, int aIndex, int *aPos, int nd, QUOTELV_K_POINT *aKPre);//非压缩

//========================================================================================

//lisz add 20110916 start
//========================================================================================
//定制leve2 K线结构（用于leve2 K线）
//========================================================================================
///定制leve2 K线结构（用于leve2 K线）
typedef struct QUOTELV_LEVE2_K_POINT_tag
{
  ///8 byte 散户买单成交量
  long64 lRetailBidVolume;
  ///8 byte 散户买单成交单数
  long64 lRetailBidTradeCount;
  ///8 byte 主力买单成交量
  long64 lMainBidVolume ;
  ///8 byte 主力买单成交额
  long64 lMainBidAmount;
  ///8 byte 主力买单成交单数
  long64 lMainBidTradeCount;
  ///8 byte 散户卖单成交量
  long64 lRetailAskVolume;
  ///8 byte  散户卖单成交单数
  long64 lRetailAskTradeCount;
  ///8 byte 主力卖单成交量
  long64 lMainAskVolume;
  ///8 byte 主力卖单成交额
  long64 lMainAskAmount;
  ///8 byte 主力卖单成交单数
  long64 lMainAskTradeCount;
}QUOTELV_LEVE2_K_POINT;

/**解析K线leve2 ddx,bbd结构
 *
 *  @param char					*aSrc	数据源
 *  @param QUOTELV_LEVE2_K_POINT			*aK		定制股票点结构
 *  @param int						&nPos	偏移量
 *
 *  @return -
 */
void QuoteDataLV_ParseLeve2KPoint(char *aSrc, QUOTELV_LEVE2_K_POINT *aK, int aIndex, int *aPos);

typedef struct QUOTELV_LEVE2_K_TRANC_POINT_tag
{
  
  ///8 byte 主力买单成交量
  long64 lMainBidVolume ;
  ///8 byte 主力卖单成交量
  long64 lMainAskVolume;
  ///8 byte 总成交笔数
  long64 lTotalTradeCount;
}QUOTELV_LEVE2_K_TRANC_POINT;

/**解析K线leve2均量均额结构
 *
 *  @param char					*aSrc	数据源
 *  @param QUOTELV_LEVE2_K_TRANC_POINT			*aK		定制股票点结构
 *  @param int						&nPos	偏移量
 *
 *  @return -
 */
void QuoteDataLV_ParseLeve2TrancKPoint(char *aSrc,
                                       QUOTELV_LEVE2_K_TRANC_POINT *aK,
                                       int aIndex,
                                       int *aPos,
                                       QUOTELV_LEVE2_K_TRANC_POINT *aKPre);

//========================================================================================
//lisz add 20110916 end

//========================================================================================
//明细点结构（用于明细）
//========================================================================================
///明细点结构（用于明细）
typedef struct QUOTELV_DETAIL_POINT_tag
{
  /// 4 byte 最新价
  float				fPri;
  /// 8 byte 成交数量（以手为单位）
  long64				lVol;
  /// 4 byte 时间
  int					nDate;
  /// 4 byte 成交笔数
  int					nNum;
  /// 1 byte 买卖盘（S：卖出 B：买入）
  char				wind;
  /// 4 byte 明细对应的逐笔索引（最后一笔）
  int					nTradeIndex;
}QUOTELV_DETAIL_POINT;

//========================================================================================

//========================================================================================
//个股相关的资讯订阅
//========================================================================================
///个股相关的资讯订阅
typedef struct QUOTELV_STOCKINFO_POINT_tag
{
  ///标题
  char*			pTitle;
  ///地址
  char*			pUrl;
  ///日期
  char*			pDate;
}QUOTELV_STOCKINFO_POINT;

/**解析个股资讯结构
 *
 *  @param char					*aSrc					数据源
 *  @param QUOTELV_STOCKINFO_POINT *aInfo					个股相关的资讯点结构
 *
 *  @return －
 */
void QuoteDataLV_ParseInfoPoint(char *aSrc, QUOTELV_STOCKINFO_POINT *aInfo);

//========================================================================================


//========================================================================================
//个股报价查询数据结构
//========================================================================================


///个股报价查询请求包结构
typedef struct QUOTELV_PRICE_ASK_tag
{
  ///证券代码
  char				code[CODELV_LEN+1];
  ///市场ID（不能确定为0）
  char				marketid;
  ///定制字段个数
  unsigned short		fdcount;
  ///字段索引列表（字段索引参看以下StockInfo结构表和MarketIndex结构表）
  unsigned short		fd[ITEMLV_NUM];
  
}QUOTELV_PRICE_ASK;

///个股报价查询应答包结构
typedef struct QUOTELV_PRICE_RES_tag
{
  ///定制字段个数
  unsigned short		fdcount;
  ///字段索引列表（字段索引参看以下StockInfo结构表和MarketIndex结构表）
  unsigned short		fd[ITEMLV_NUM];
  ///报价数据
  QUOTELV_STOCK_POINT	priceData;
  
}QUOTELV_PRICE_RES;

/**解析报价数据结构
 *
 *  @param char      *aSrc					数据源
 *  @param QUOTELV_PRICE_RES *aPriceRes	报价数据结构
 *
 *  @return －
 */
void QuoteDataLV_ParsePriceData(char *aSrc, int aType, QUOTELV_PRICE_RES *aPriceRes);
//========================================================================================

//========================================================================================
//自选股数据结构
//========================================================================================

///自选股数据请求包结构
typedef struct QUOTELV_OWN_ASK_tag
{
  ///股票个数
  unsigned short		count;
  ///证券代码+市场
  char				codedata[MAX_PATH];
  ///定制字段个数
  unsigned short		fdcount;
  ///字段索引列表（字段索引参看以下StockInfo结构表和MarketIndex结构表）
  unsigned short		fd[ITEMLV_NUM];
}QUOTELV_OWN_ASK;

///自选股数据应答包结构
typedef struct QUOTELV_OWN_RES_tag
{
  ///定制字段个数
  unsigned short		fdcount;
  ///字段索引列表（字段索引参看以下StockInfo结构表和MarketIndex结构表）
  unsigned short		fd[ITEMLV_NUM];
  ///返回的记录个数
  unsigned short		nCount;
  ///自选股数据
  QUOTELV_STOCK_POINT	ownData[POINT_NUM];
  ///请求的自选股返回的总量
  int					nTotalCount;
}QUOTELV_OWN_RES;

/**解析自选股数据结构
 *
 *  @param char      *aSrc					数据源
 *  @param QUOTELV_OWN_RES *aOwnRes		自选股数据结构
 *
 *  @return －
 */
void QuoteDataLV_ParseOwnData(char *aSrc, QUOTELV_OWN_RES *aOwnRes, short aType);

//========================================================================================

//========================================================================================
//自选股数据结构(扩展获取全部）
//========================================================================================

///自选股数据请求包结构
typedef struct QUOTELV_OWNALL_ASK_tag
{
  ///股票个数
  unsigned short		count;
  ///证券代码+市场
  char				*codedata;
  ///定制字段个数
  unsigned short		fdcount;
  ///字段索引列表（字段索引参看以下StockInfo结构表和MarketIndex结构表）
  unsigned short		fd[ITEMLV_NUM];
}QUOTELV_OWNALL_ASK;

///自选股数据应答包结构
typedef struct QUOTELV_OWNALL_RES_tag
{
  ///定制字段个数
  unsigned short		fdcount;
  ///字段索引列表（字段索引参看以下StockInfo结构表和MarketIndex结构表）
  unsigned short		fd[ITEMLV_NUM];
  ///返回的记录个数
  unsigned short		nCount;
  ///自选股数据
  QUOTELV_STOCK_POINT	*ownData;
  ///请求的自选股返回的总量
  int					nTotalCount;
  ///最大数量
  int                 nMaxCount;
}QUOTELV_OWNALL_RES;

/**解析自选股数据结构
 *
 *  @param char      *aSrc					数据源
 *  @param QUOTELV_OWN_RES *aOwnRes		自选股数据结构
 *
 *  @return －
 */
void QuoteDataLV_ParseOwnAllData(char *aSrc, QUOTELV_OWNALL_RES *aOwnRes, short aType);

//========================================================================================

//========================================================================================
//综合排名数据结构
//========================================================================================

///综合排名数据请求包结构
typedef struct QUOTELV_RANKING_ASK_tag
{
  ///板块id
  long64		blockId;
  ///每排名类型股票个数
  unsigned short		count;
  
}QUOTELV_RANKING_ASK;

///综合排名数据应答包结构
typedef struct QUOTELV_RANKING_RES_tag
{
  ///板块id
  long64		blockId;
  ///综合排名股票总记录个数
  unsigned short		nTotalCount;
  ///返回每排名类型股票个数
  unsigned short		nCount;
  ///股票数据
  QUOTELV_STOCK_POINT	stockData[POINT_NUM];
}QUOTELV_RANKING_RES;

/**解析自选股数据结构
 *
 *  @param char      *aSrc					数据源
 *  @param QUOTELV_RANKING_RES *aRankingRes	综合排名数据结构
 *	@param short	aType					包类型(全包，部分包)
 *
 *  @return －
 */
void QuoteDataLV_ParseRankingData(char *aSrc, QUOTELV_RANKING_RES *aRankingRes, short aType);

//========================================================================================

//========================================================================================
//定制分时数据结构
//========================================================================================

///定制分时请求包数据结构
typedef struct QUOTELV_MIN_ASK_tag
{
  ///证券代码
  char				code[CODELV_LEN+1];
  ///市场ID（不能确定为0）
  char				marketid;
  ///分时点最后索引
  short				index;
  ///起始日期（历史分时使用）
  int					date;
  ///请求历史分时行情的天数（历史分时使用）
  int					count;
  ///定制字段个数
  char				fdcount;
  ///字段索引列表（字段索引参看以下StockInfo结构表和MarketIndex结构表）
  char				fd[ITEMLV_NUM];
}QUOTELV_MIN_ASK;

typedef struct QUOTELV_LEVE2_MIN_ASK_tag
{
  ///证券代码
  char				code[CODELV_LEN+1];
  ///市场ID（不能确定为0）
  char				marketid;
  ///分时点最后索引
  short				index;
  ///起始日期（历史分时使用）
  int					date;
  ///请求历史分时行情的天数（历史分时使用）
  int					count;
  ///定制字段个数
  char				fdcount;
  ///字段索引列表（字段索引参看以下StockInfo结构表和MarketIndex结构表）
  char				fd[ITEMLV_NUM];
}QUOTELV_LEVE2_MIN_ASK;

///定制分时应答包数据结构
typedef struct QUOTELV_MIN_RES_tag
{
  ///股票代码
  CODELV_INFO codeinfo;
  ///收盘价
  float				fPre;
  ///总成金额
  long64      lTotalSum;
  ///总成交量
  long64      lTotalVol;
  ///分时开始索引（返回分时点）
  short				nIndex;
  ///分时信息包数组的长度
  short				nCount;
  ///定制字段个数
  char				fdcount;
  ///字段索引列表（字段索引参看以下StockInfo结构表和MarketIndex结构表）
  char				fd[ITEMLV_NUM];
  ///分时点数据
  QUOTELV_MIN_POINT minData[MIN_MAX_NUM];
  ///总个数
  int					nTotalCount;
  //lisz add 20110916 start
  //是否已经订阅leve2数据，
  TBOOL bLeve2Status;
  ///ddx数据
  QUOTELV_LEVE2_MIN_POINT leve2MinData[MIN_MAX_NUM];
  ///总流通盘
  long64      lFloatShare;
  ///ddx总个数
  int					nLeve2TotalCount;
  //lisz add 20110916 end
  //add by jason 记录当前订阅ID,和返回数据订阅id进行比较
  int					nSubID;
  //end
  
}QUOTELV_MIN_RES;

/**解析分时数据结构
 *
 *  @param char				*aSrc					数据源
 *  @param QUOTELV_MIN_RES		*aMinRes				自选股数据结构
 *  @param short				aResType				分时类型（分时：RQS_LV_MIN 历史分时：RQS_LV_HISMIN）
 *  @param int aType						类型 （0x01全包 0x02部分包）
 *
 *  @return -
 */
void QuoteDataLV_ParseMinData(char *aSrc, QUOTELV_MIN_RES *aMinRes, short aResType, short aType);

/**解析leve2分时数据结构
 *
 *  @param char               *aSrc           数据源
 *  @param QUOTELV_MIN_RES		*aMinRes				自选股数据结构
 *  @param short              aResType				分时类型（分时：RQS_LV_MIN 历史分时：RQS_LV_HISMIN）
 *  @param int aType					类型 （0x01全包 0x02部分包）
 *
 *  @return -
 */
void QuoteDataLV_ParseLeve2MinData(char *aSrc,
                                   QUOTELV_MIN_RES *aMinRes,
                                   short aResType,
                                   short aType);

/**解析默认分时数据结构
 *
 *  @param char				*aSrc					数据源
 *  @param QUOTELV_MIN_RES		*aMinRes				自选股数据结构
 *  @param int aType									类型 （0x01全包 0x02部分包）
 *
 *  @return -
 */
void QuoteDataLV_ParseDFTMinData(char *aSrc, QUOTELV_MIN_RES *aMinRes, short aType);

//========================================================================================


//========================================================================================
//定制K线数据结构
//========================================================================================

///定制K线请求包结构
typedef struct QUOTELV_K_ASK_tag
{
  ///证券代码
  char				code[CODELV_LEN+1];
  ///市场ID（不能确定为0）
  char				marketid;
		///除复权类型
  char				exdiviType;
  ///K线类型功能号
  char				klinetype;
  ///起始k线日期时间
  int					date;
  ///页号
  short				page;
  ///页长度
  short				count;
  ///定制字段个数
  char				fdcount;
  ///字段索引列表（字段索引参看以下K结构表）
  char				fd[ITEMLV_NUM];
  ///补充字段个数
  char				Addedcount;
  ///补充字段索引列表（字段索引参看以下K结构表）
  char				Added[ITEMLV_NUM][2];
  
}QUOTELV_K_ASK;

typedef struct QUOTELV_LEVE2_K_ASK_tag
{
  ///证券代码
  char				code[CODELV_LEN+1];
  ///市场ID（不能确定为0）
  char				marketid;
  ///K线类型功能号
  char				klinetype;
  ///起始k线日期时间
  int					date;
  ///页号
  short				page;
  ///页长度
  short				count;
  ///定制字段个数
  char				fdcount;
  ///字段索引列表（字段索引参看以下K结构表）
  char				fd[ITEMLV_NUM];
  ///补充字段个数
  char				Addedcount;
  ///补充字段索引列表（字段索引参看以下K结构表）
  char				Added[ITEMLV_NUM][2];
  
}QUOTELV_LEVE2_K_ASK;

typedef struct QUOTELV_LEVE2_TRANC_K_ASK_tag
{
  ///证券代码
  char				code[CODELV_LEN+1];
  ///市场ID（不能确定为0）
  char				marketid;
  ///K线类型功能号
  char				klinetype;
  ///起始k线日期时间
  int					date;
  ///页号
  short				page;
  ///页长度
  short				count;
  ///定制字段个数
  char				fdcount;
  ///字段索引列表（字段索引参看以下K结构表）
  char				fd[ITEMLV_NUM];
  ///补充字段个数
  char				Addedcount;
  ///补充字段索引列表（字段索引参看以下K结构表）
  char				Added[ITEMLV_NUM][2];
  
}QUOTELV_LEVE2_TRANC_K_ASK;

///定制K线应答包结构
typedef struct QUOTELV_K_RES_tag
{
  ///股票代码
  CODELV_INFO			codeinfo;
  ///除复权类型
  char				exdiviType;
  ///K线类型
  char				kLineType;
  ///最新K线时间
  int					nNewTime;
  ///K线信息包数组的长度
  int					nTotalCount;
  ///返回的K线长度
  int					nCount;
  ///k线点数组
  QUOTELV_K_POINT		kData[KLIN_MAX_NUM];
  ///定制字段个数
  char				fdcount;
  ///字段索引列表（字段索引参看以下K结构表）
  char				fd[ITEMLV_NUM];
  ///补充字段个数
  char				Addedcount;
  ///补充字段索引列表（字段索引参看以下K结构表）
  char				Added[ITEMLV_NUM][2];
  ///总数（K线显示数量+补充数量最大的那个）
  int					nMaxCount;
  ///k线的起始位置
  int					nKStartPos;
  ///k线的偏移位置
  int					nOffset;
  
  //lisz add 20110916 start
  //是否已经订阅leve2数据，
  TBOOL bLeve2DDXStatus;
  TBOOL bLeve2TrancStatus;
  ///leve2 k线DDX,BBD数据
  QUOTELV_LEVE2_K_POINT leve2KData[KLIN_MAX_NUM];
  ///流通盘(这里最大可存放256次流通盘变化)
  long64 lFloatShare[256];
  int nEffectiveCount;
  ///leve2 k线均量，均价数据
  QUOTELV_LEVE2_K_TRANC_POINT leve2TrancKData[KLIN_MAX_NUM];
  long64 lTrancFloatShare[256];
  int nTrancEffectiveCount;
  //lisz add 20110916 end
}QUOTELV_K_RES;

/**解析K线数据结构
 *
 *  @param char               *aSrc					数据源
 *  @param QUOTELV_K_RES      *aKRes        k线数据结构
 *  @param int                aType					类型 （0x01全包 0x02部分包）
 *  @param int                aOffset				补充数据偏移量
 *  @param TBOOL							bIsExDIVI			是否为除复权数据 //add by jason
 *
 *  @return －
 */
void QuoteDataLV_ParseKData(char *aSrc, QUOTELV_K_RES *aKRes, short aType, int aPageCount,int aOffset,TBOOL bIsExDIVI);
void QuoteDataLV_ParseKData2(char *aSrc, QUOTELV_K_RES *aKRes, short aType, int aPageCount,int aOffset,TBOOL bIsExDIVI);

//lisz add 20110916 start
/**解析K线数ddx,bbd据结构
 *
 *  @param char               *aSrc					数据源
 *  @param QUOTELV_MIN_RES		*aMinRes			自选股数据结构
 *  @param int                aType					类型 （0x01全包 0x02部分包）
 *  @param int                aOffset				补充数据偏移量
 *
 *  @return －
 */
void QuoteDataLV_ParseLeve2KData(char *aSrc, QUOTELV_K_RES *aKRes, short aType, int aPageCount,int aOffset);

/**解析K线数均量均额据结构
 *
 *  @param char               *aSrc					数据源
 *  @param QUOTELV_K_RES      *aKRes        k线数据结构
 *  @param int                aType					类型 （0x01全包 0x02部分包）
 *  @param int                aOffset				补充数据偏移量
 *
 *  @return －
 */
void QuoteDataLV_ParseLeve2TrancKData(char *aSrc,
                                      QUOTELV_K_RES *aKRes,
                                      short aType,
                                      int aPageCount,
                                      int aOffset);
//lisz add 20110916 end

//========================================================================================

//========================================================================================
//明细数据结构
//========================================================================================

///明细请求包结构
typedef struct QUOTELV_DETAIL_ASK_tag
{
  ///证券代码
  char				code[CODELV_LEN+1];
  ///市场ID（不能确定为0）
  char				marketid;
  ///索引(本地已有明细最后点索引，当本地无任何点时为-1，索引值从前至后递增)
  int					index;
  ///长度
  unsigned short		count;
}QUOTELV_DETAIL_ASK;

///明细应答包结构
typedef struct QUOTELV_DETAIL_RES_tag
{
  ///股票代码
  CODELV_INFO				codeinfo;
  ///收盘价
  float					fPre;
  ///总记录数
  int						nZTotalCount;
  ///分时信息包数组的长度
  short					nCount;
  ///明细点数据
  QUOTELV_DETAIL_POINT	detailData[POINT_NUM];
  ///当前总量（显示总数）
  int						nTotalCount;
  //add by jason 记录当前订阅ID,和返回数据订阅id进行比较
  int						nSubID;
  //end
  
}QUOTELV_DETAIL_RES;

/**解析明细数据结构
 *
 *  @param char				 *aSrc					数据源
 *  @param QUOTELV_DETAIL_RES	 *aDetailRes			明细数据结构
 *  @param int					aType					类型 （0x01全包 0x02部分包）
 *  @param int					aPageCount				一页最大数量
 *
 *  @return -
 */
void QuoteDataLV_ParseDetailData(char *aSrc, QUOTELV_DETAIL_RES *aDetailRes, short aType, int aPageCount);

/**解析Level-2明细数据结构
 *
 *  @param char				 *aSrc					数据源
 *  @param QUOTELV_DETAIL_RES	 *aDetailRes			明细数据结构
 *  @param int					aType					类型 （0x01全包 0x02部分包）
 *  @param int					aPageCount				一页最大数量
 *
 *  @return -
 */
void QuoteDataLV_ParseDetailLvData(char *aSrc, QUOTELV_DETAIL_RES *aDetailRes, short aType, int aPageCount);

//========================================================================================

//========================================================================================
//板块排行数据结构
//========================================================================================

///板块排行请求包结构
typedef struct QUOTELV_BLOCK_ASK_tag
{
  ///板块ID
  long64				blockid;
  ///排行中开始的索引
  int					index;
  ///一页的条数
  short				count;
  ///排序字段索引（当该字段不支持排序时，默认为代码字段）
  short				sortindex;
  ///0不排序/1升序/ 2降序
  char				sortmode;
  ///定制字段个数
  unsigned short		fdcount;
  ///字段索引列表（字段索引参看以下StockInfo结构表和MarketIndex结构表）
  unsigned short		fd[ITEMLV_NUM];
}QUOTELV_BLOCK_ASK;

///板块排行应答包结构
typedef struct QUOTELV_BLOCK_RES_tag
{
  ///板块ID
  long64				blockid;
  ///总记录数（一个板块的所有股票个数）
  int					nZTotalCount;
  ///返回的记录个数
  unsigned short		nCount;
  ///定制字段个数
  unsigned short		fdcount;
  ///字段索引列表（字段索引参看以下StockInfo结构表和MarketIndex结构表）
  unsigned short		fd[ITEMLV_NUM];
  ///个股数组
  QUOTELV_STOCK_POINT	blockData[POINT_NUM];
  ///记录个数
  int					nTotalCount;
  
}QUOTELV_BLOCK_RES;

/**解析板块结构
 *
 *  @param char				*aSrc			数据源
 *  @param QUOTELV_BLOCK_RES	*aBlockRes		板块排行数据结构
 *
 *  @return －
 */
void QuoteDataLV_ParseBlockData(char *aSrc, QUOTELV_BLOCK_RES *aBlockRes);


/**解析板块okex结构
 *
 *  @param char				*aSrc			数据源
 *  @param QUOTELV_BLOCK_RES	*aBlockRes		板块okex排行数据结构
 *
 *  @return -
 */
void QuoteDataLV_ParseBlockIndexData(char *aSrc, QUOTELV_BLOCK_RES *aBlockRes);
//========================================================================================

//========================================================================================
//BTexokex据结构
//========================================================================================

///BTexokex请求包结构
typedef struct QUOTELV_INDEX_ASK_tag
{
  ///定制字段个数
  unsigned short		fdcount;
  ///字段索引列表（字段索引参看以下StockInfo结构表和MarketIndex结构表）
  unsigned short		fd[ITEMLV_NUM];
}QUOTELV_INDEX_ASK;

///BTexokex应答包结构
typedef struct QUOTELV_INDEX_RES_tag
{
  ///定制字段个数
  unsigned short		fdcount;
  ///返回的记录个数
  unsigned short		nCount;
  ///字段索引列表（字段索引参看以下StockInfo结构表和MarketIndex结构表）
  unsigned short		fd[ITEMLV_NUM];
  ///自选股数据
  QUOTELV_STOCK_POINT	indexData[POINT_NUM];
  ///总个数
  int					nTotalCount;
  
}QUOTELV_INDEX_RES;

/**解析okex结构
 *
 *  @param char      *aSrc					数据源
 *  @param QUOTELV_INDEX_RES *aIndexRes	BTexokex数据结构
 *  @param in aType						类型 （0x01全包 0x02部分包）
 *
 *  @return -
 */
void QuoteDataLV_ParseIndexData(char *aSrc, QUOTELV_INDEX_RES *aIndexRes, int aType);
//========================================================================================

//Level2 结构
//========================================================================================
//返回最新N（100条以内）条逐笔成交
//========================================================================================

///返回最新N（100条以内）条逐笔成交请求包结构
typedef struct QUOTELV_INDIVID_ASK_tag
{
  ///证券代码
  char				code[CODELV_LEN+1];
  ///市场ID（不能确定为0）
  char				marketid;
  ///索引(本地已有明细最后点索引，当本地无任何点时为-1，索引值从前至后递增)
  int					index;
  ///长度
  unsigned short		count;
}QUOTELV_INDIVID_ASK;

///返回最新N（100条以内）条逐笔成交应答包结构
typedef struct QUOTELV_INDIVID_RES_tag
{
  ///股票信息
  CODELV_INFO					codeinfo;
  ///昨收
  float						fPre;
  ///本次逐笔最后一笔索引
  int							nIndex;
  ///点结构长度
  short						nCount;
  ///点结构
  QUOTELV_DETAIL_POINT		detailData[POINT_NUM];
  ///记录个数
  int							nTotalCount;
}QUOTELV_INDIVID_RES;


/**解析逐笔成交结构
 *
 *  @param char      *aSrc							数据源
 *  @param QUOTELV_INDIVID_RES *aIndividRes		逐笔成交数据结构
 *  @param in aType								类型 （0x01全包 0x02部分包）
 *
 *  @return －
 */
void QuoteDataLV_ParseIndividData(char *aSrc, QUOTELV_INDIVID_RES *aIndividRes, short aType, int aPageCount);
//========================================================================================

//========================================================================================
//按时间查找逐笔成交
//========================================================================================

///按时间查找逐笔成交请求包结构
typedef struct QUOTELV_INDIVID_TIME_ASK_tag
{
  ///证券代码
  char				code[CODELV_LEN+1];
  ///市场ID（不能确定为0）
  char				marketid;
  ///时间（hhmmss）
  int					date;
}QUOTELV_INDIVID_TIME_ASK;

///按时间查找逐笔成交应答包结构
typedef struct QUOTELV_INDIVID_TIME_RES_tag
{
  ///股票信息
  CODELV_INFO					codeinfo;
  ///昨收
  float						fPre;
  ///点结构长度
  short						nCount;
  ///点结构
  QUOTELV_DETAIL_POINT		detailData[POINT_NUM];
}QUOTELV_INDIVID_TIME_RES;


/**解析时间逐笔成交结构
 *
 *  @param char      *aSrc									数据源
 *  @param QUOTELV_INDIVID_TIME_RES *aIndividTimeRes		时间逐笔成交数据结构
 *  @param in aType										类型 （0x01全包 0x02部分包）
 *
 *  @return -
 */
void QuoteDataLV_ParseIndividTimeData(char *aSrc, QUOTELV_INDIVID_TIME_RES *aIndividTimeRes, short aType);
//========================================================================================

//========================================================================================
//最新委托队列
//========================================================================================

///最新委托队列请求包结构
typedef struct QUOTELV_TRUST_ASK_tag
{
  ///证券代码
  char				code[CODELV_LEN+1];
  ///市场ID（不能确定为0）
  char				marketid;
}QUOTELV_TRUST_ASK;

///最新委托队列应答包结构
typedef struct QUOTELV_TRUST_RES_tag
{
  ///股票信息
  CODELV_INFO					codeinfo;
  ///昨收
  float						fPre;
  ///当前买入价
  float						fBidPri;
  ///申买量一
  long64						lBidVol;
  ///当前价位委托列表（最长50）
  char						nBidCount;
  ///当前价位委托列表
  int							bidData[50];
  ///当前买入价
  float						fAskPri;
  ///申卖量一
  long64						lAskVol;
  ///当前价位委托列表（最长50）
  char						nAskCount;
  ///当前价位委托列表
  int							askData[50];
}QUOTELV_TRUST_RES;


/**解析最新委托队列结构
 *
 *  @param char      *aSrc									数据源
 *  @param QUOTELV_TRUST_RES *aTrustRes					委托队列数据结构
 *  @param in aType										类型 （0x01全包 0x02部分包）
 *
 *  @return -
 */
void QuoteDataLV_ParseTrustData(char *aSrc, QUOTELV_TRUST_RES *aTrustRes, short aType);
//========================================================================================

//========================================================================================
//个股撤单队列
//========================================================================================

///个股撤单队列请求包结构
typedef struct QUOTELV_CANCELTRUST_ASK_tag
{
  ///1 委买  2 委卖
  char				type;
  ///证券代码
  char				code[CODELV_LEN+1];
  ///市场ID（不能确定为0）
  char				marketid;
  ///索引
  int					index;
  ///长度
  short				count;
}QUOTELV_CANCELTRUST_ASK;

///个股撤单队列应答包结构
typedef struct QUOTELV_CANCELTRUST_RES_tag
{
  ///1 委买  2 委卖
  char						Type;
  ///股票信息
  CODELV_INFO					codeinfo;
  ///昨收
  float						fPre;
  ///当前显示记录数
  int							nTotalCount;
  ///点结构长度
  short						nCount;
  ///撤单点结构数组
  QUOTELV_DETAIL_POINT		detailData[POINT_NUM];
  ///总记录数
  int							nZTotalCount;
}QUOTELV_CANCELTRUST_RES;


/**解析个股撤单队列结构
 *
 *  @param char      *aSrc									数据源
 *  @param QUOTELV_CANCELTRUST_RES *aTrustCancelRes		委托队列数据结构
 *  @param in aType										类型 （0x01全包 0x02部分包）
 *
 *  @param -
 */
void QuoteDataLV_ParseCancelTrustData(char *aSrc, QUOTELV_CANCELTRUST_RES *aTrustCancelRes, short aType, int aPageCount);

//========================================================================================
//个股相关的资讯订阅
//========================================================================================

///个股相关的资讯订阅请求包结构
typedef struct QUOTELV_STOCKINFO_ASK_tag
{
  ///证券代码
  char				code[CODELV_LEN+1];
  ///市场ID（不能确定为0）
  char				marketid;
  ///1 分时界面 2 k线界面 3 个股资讯
  char				type;
  ///最新资讯的时间
  long64 				time;
}QUOTELV_STOCKINFO_ASK;

///个股相关的资讯订阅应答包结构
typedef struct QUOTELV_STOCKINFO_RES_tag
{
  ///证券代码
  char						StockCode[CODELV_LEN+1];
  ///市场ID（不能确定为0）
  char						MarketId;
  ///1 分时界面 2 k线界面 3 个股资讯
  char						Type;
  ///最新资讯的时间
  long64 						lNewTime;
  ///数据长度
  short						nLen;
  ///点结构
  QUOTELV_STOCKINFO_POINT		infoData[MIN_MAX_NUM];
  ///当前总量（只是客户端用）
  int							nTotalCount;
}QUOTELV_STOCKINFO_RES;


/**解析个股相关的资讯订阅
 *
 *  @param char						*aSrc			数据源
 *  @param QUOTELV_STOCKINFO_RES		*aInfoRes		个股相关的资讯数据结构
 *  @param in							aType			类型 （0x01全包 0x02部分包）
 *
 *  @return -
 */
void QuoteDataLV_ParseStockInfoData(char *aSrc, QUOTELV_STOCKINFO_RES *aInfoRes, int aType);

//========================================================================================

//========================================================================================
//逐笔成交量统计功能号
//========================================================================================

///逐笔成交量统计请求包结构
typedef struct QUOTELV_INDIVID_VOL_ASK_tag
{
  ///证券代码
  char				code[CODELV_LEN+1];
  ///市场ID（不能确定为0）
  char				marketid;
}QUOTELV_INDIVID_VOL_ASK;

///逐笔成交量统计应答包结构
typedef struct QUOTELV_INDIVID_VOL_RES_tag
{
  ///股票信息
  CODELV_INFO					codeinfo;
  ///买入 小单
  long64 						sBuyVol;
  ///买入 中单
  long64 						mBuyVol;
  ///买入 大单
  long64 						lBuyVol;
  ///买入 特大单
  long64 						gBuyVol;
  ///卖出 小单
  long64 						sSellVol;
  ///卖出 中单
  long64 						mSellVol;
  ///卖出 大单
  long64 						lSellVol;
  ///卖出 特大单
  long64 						gSellVol;
}QUOTELV_INDIVID_VOL_RES;


/**解析逐笔成交量统计
 *
 *  @param char						*aSrc			数据源
 *  @param QUOTELV_INDIVID_VOL_RES		*aVolRes		逐笔成交量统计数据结构
 *  @param int							aType			类型 （0x01全包 0x02部分包）
 *
 *  @return -
 */
void QuoteDataLV_ParseIndividVolData(char *aSrc, QUOTELV_INDIVID_VOL_RES *aVolRes, int aType);

//========================================================================================

//========================================================================================
//数据选股
//========================================================================================

///数据选股请求包结构
typedef struct QUOTELV_SEL_STOCK_ASK_tag
{
  ///板块ID
  long64							blockid;
  ///选股类别
  short							type;
}QUOTELV_SEL_STOCK_ASK;

///数据选股应答包结构
typedef struct QUOTELV_SEL_STOCK_RES_tag
{
  ///定制字段个数
  unsigned short					fdcount;
  ///返回的记录个数
  unsigned short					nCount;
  ///字段索引列表（字段索引参看以下StockInfo结构表和MarketIndex结构表）
  unsigned short					fd[ITEMLV_NUM];
  ///选股数据
  QUOTELV_STOCK_POINT				stockData[SEL_STOCK_ITEMLV_NUM];
  ///总个数
  int								nTotalCount;
}QUOTELV_SEL_STOCK_RES;


/**解析数据选股
 *
 *  @param char						*aSrc			数据源
 *  @param QUOTELV_INDIVID_VOL_RES		*aVolRes		数据选股数据结构
 *
 *  @return -
 */
void QuoteDataLV_ParseSelStockData(char *aSrc, QUOTELV_SEL_STOCK_RES *aSelRes);

//========================================================================================
//数据选股目录列表
//========================================================================================
///数据选股目录列表请求包结构
typedef struct QUOTELV_SEL_DIRLIST_ASK_tag
{
  ///目录id（当首次进入此模块时该值为0，将返回一级目录）
  short							dirid;
}QUOTELV_SEL_DIRLIST_ASK;

/*///数据选股目录列表点结构
 typedef struct QUOTELV_SEL_DIRLIST_ITEM_tag
 {
 ///目录id，请求数据选股时，用此字段作为数据选股协议的type请求
	short							dirid;
 ///目录名称
	char							pDirName[ITEMLV_NUM];
 ///1：表示数据选股 0：表示目录
	char							LeafOrNot;
 }QUOTELV_SEL_DIRLIST_ITEM;*/

///数据选股目录列表点结构
typedef struct QUOTELV_SEL_DIRLIST_ITEM_tag
{
  ///目录id，请求数据选股时，用此字段作为数据选股协议的type请求
  short							dirid;
  ///目录名称
  char							pDirName[ITEMLV_NUM];
  ///父级目录
  unsigned short		nParentdirid;
  ///1：表示数据选股 0：表示目录
  char							LeafOrNot;
  ///父结点id
}QUOTELV_SEL_DIRLIST_ITEM;

///数据选股目录列表应答包结构
typedef struct QUOTELV_SEL_DIRLIST_RES_tag
{
  ///请求的目录的父级目录
  unsigned short					nParentdirid;
  ///子目录个数
  unsigned short					nTotalCount;
  ///选股数据
  QUOTELV_SEL_DIRLIST_ITEM		DirList[ITEMLV_NUM];
}QUOTELV_SEL_DIRLIST_RES;

///数据选股目录列表应答包一级目录结构
typedef struct QUOTELV_SEL_DIRLIST_RES_FIRST_tag
{
  ///请求的目录的父级目录
  unsigned short					nParentdirid;
  ///父级目录名称
  char										pParentName[SEL_STOCK_ITEMLV_NUM];
  ///目录id
  unsigned short					nDirID;
  ///1：表示数据选股 0：表示目录
  char										LeafOrNot;
  ///子目录个数
  unsigned short					nTotalCount;
  ///选股数据
  QUOTELV_SEL_DIRLIST_ITEM		ChildList[ITEMLV_NUM];
  
} QUOTELV_SEL_DIRLIST_RES_FIRST;

///数据选股目录列表应答包结构（0x3a）
typedef struct QUOTELV_SEL_DIRLIST_RES_ALL_tag
{
  ///父级目录总个数
  int							nDirCount;
  ///父级目录结构体
  QUOTELV_SEL_DIRLIST_RES_FIRST ParentList[ITEMLV_NUM];
}QUOTELV_SEL_DIRLIST_RES_ALL;

///综合选股查询条件结构体
typedef struct QUOTELV_SEL_QUERY_ASK_ITEM_tag
{
  ///查询条件类型
  unsigned short nQueryType;
  ///查询条件值
  long64				 lQueryvalue;
  
}QUOTELV_SEL_QUERY_ASK_ITEM;

///综合选股查询条件结构体
typedef struct QUOTELV_SEL_QUERY_ASK_tag
{
  ///查询个数
  unsigned short	nQueryNum;
  ///查询条件
  QUOTELV_SEL_QUERY_ASK_ITEM queryItem[SEL_STOCK_QUERY_NUM];
}QUOTELV_SEL_QUERY_ASK;

///综合选股筛选目录点结构
typedef struct QUOTELV_SEL_BOARDLIST_POINT_tag
{
  ///列表id
  long64		lID;
  ///列表名称
  char			pName[30];
  ///类型
  char			pType;
}QUOTELV_SEL_BOARDLIST_POINT;

///综合选股筛选目录结构
typedef struct QUOTELV_SEL_BOARDLIST_RES_tag
{
  ///点结构个数
  short			nItemCounts;
  ///点结构
  QUOTELV_SEL_BOARDLIST_POINT *pBoardListPoints;
}QUOTELV_SEL_BOARDLIST_ALL_RES;



/**解析数据选股目录列表
 *
 *  @param char						*aSrc			数据源
 *  @param QUOTELV_SEL_DIRLIST_RES		*aVolRes		数据选股数据结构
 *
 *  @return -
 */
void QuoteDataLV_ParseSelDirListData(char *aSrc, QUOTELV_SEL_DIRLIST_RES *aSelListRes);

/**解析数据选股目录列表
 *
 *  @param char						*aSrc			数据源
 *  @param QUOTELV_SEL_DIRLIST_RES_ALL		*aVolRes		数据选股数据结构
 *
 *  @return -
 */
void QuoteDataLV_ParseSelDirListAllData(char *aSrc, QUOTELV_SEL_DIRLIST_RES_ALL *aSelListRes);

/**解析数据选股筛选条件目录列表
 *
 *  @param char						*aSrc			数据源
 *  @param QUOTELV_SEL_BOARDLIST_ALL_RES		*aSelBoardListRes		数据选股数据结构
 *
 *  @return -
 */
void QuoteDataLV_ParseBoardListAllData(char *aSrc, QUOTELV_SEL_BOARDLIST_ALL_RES *aSelBoardListRes);


//========================================================================================

//热门板块================================================================================
typedef struct HotAsk_Point_tag{
  short queryType;
  long64 queryvalue;
}HotAsk_Point;

typedef struct  QUOTELV_HOT_DIR_ASK_tag{
  long64  boardId;
  short queryCounts;
  HotAsk_Point *queryPoints;
  int   firstindex;
  short len;
  short sortindex;
  char  sortmode;
}QUOTELV_HOT_DIR_ASK;

typedef struct QUOTELV_HOT_DIR_RES_tag{
  int length;
  char *JsonData;
}QUOTELV_HOT_DIR_RES;
//========================================================================================


//========================================================================================
//基金XML
//========================================================================================

///基金XML请求包结构
typedef struct QUOTELV_FUND_ASK_tag
{
  ///数组索引
  int								nArrayIndex;
}QUOTELV_FUND_ASK;

///基金XML Page标签属性结构
typedef struct QUOTELV_FUND_PAGE_tag
{
  ///总页数
  int								nPageCount;
  ///当前页
  int								nCurPage;
  ///刷新时间
  int								nRef;
  ///当前页地址
  char							*pCurPageUrl;
  ///上一页地址
  char							*pPrePageUrl;
  ///下一页地址
  char							*pNextPageUrl;
  ///行数
  int								nRowCount;
  ///列个数
  int								nColCount;
}QUOTELV_FUND_PAGE;

///基金XML Table标签属性结构
typedef struct QUOTELV_FUND_TABLE_tag
{
  ///背景颜色  16进制
  int								nBgColor;
  ///选中颜色
  int								nSelColor;
  ///边框控制 0:横竖线都没有，1:有横线 2:有竖线 3：都有
  int								nBorder;
  ///边框颜色
  int								nBorColor;
}QUOTELV_FUND_TABLE;

///基金XML 列标签属性结构
typedef struct QUOTELV_FUND_COL_tag
{
  ///字体颜色
  int								nTextColor;
  ///对齐方式分别为（0：左 1：中 2：右）
  int								nAlign;
  ///文本
  char							*pText;
}QUOTELV_FUND_COL;

///基金XML 行标签属性结构
typedef struct QUOTELV_FUND_ROW_tag
{
  ///背景颜色  16进制
  int								nBgColor;
  ///动作 quote：基金代码,市场id  取基金行情
  char							*pAction;
  //		nav:基金代码,市场id 取开放式基金历史净值
  //		wap：http链接地址  取wml图片文字
  //		syswap：http链接地址  用系统浏览器浏览
  //		page：http链接地址 进入下级页面
  ///列属性
  struct QUOTELV_FUND_COL_tag			*pCol;
}QUOTELV_FUND_ROW;

///基金XML应答包结构
typedef struct QUOTELV_FUND_RES_tag
{
  ///页属性
  QUOTELV_FUND_PAGE				Page;
  ///表格属性
  QUOTELV_FUND_TABLE				Table;
  ///行属性
  QUOTELV_FUND_ROW				*pRowPro;
  ///列属性
  QUOTELV_FUND_COL				*pColPro;
  ///涨跌幅标记（内部使用）
  char							pRangTag[16];
}QUOTELV_FUND_RES;


/**解析基金
 *
 *  @param char						*aSrc			数据源
 *  @param QUOTELV_FUND_RES			*aFundRes		基金数据结构
 *
 *  @return －
 */
void QuoteDataLV_ParseFundListData(char *aSrc, QUOTELV_FUND_RES *aFundRes);

/**释放基金数据
 *
 *  @param QUOTELV_FUND_RES			*aFundRes		数据选股数据结构
 *
 *  @return -
 */
void QuoteDataLV_ReleaseFundListData(QUOTELV_FUND_RES *aFundRes);



///基金净值分时点结构
typedef struct QUOTELV_FUND_MIN_POINTS_tag
{
  ///日期
  int		nDate;
  ///最新价
  float	nCur;
}QUOTELV_FUND_POINTS;


///基金分时图数据结构
typedef struct QUOTELV_FUND_MIN_RES_tag
{
  ///股票结构
  CODELV_INFO	        codeinfo;
  short		        nPointCount;
  QUOTELV_FUND_POINTS	data[256];		//分时点数组
}QUOTELV_FUND_MIN_RES;

/**解析
 *
 *  @param char							*aSrc			数据源
 *  @param QUOTELV_FUND_MIN_RES			*aFundMinRes	基金分时图数据结构
 *
 *  @return -
 *  @note
 *
 */
void QuoteDataLV_ParseFundMinData(char* aSrc, QUOTELV_FUND_MIN_RES *aFundMinRes);

//========================================================================================

//========================================================================================
//市场开闭市时间XML
//========================================================================================
/**更新市场开闭市时间
 *
 *  @param QUOTELV_OPER	*aOper			操作结构指针
 *  @param char			*pXml			市场xml
 *
 *  @return -
 *  @note
 *
 */
void QuoteDataLv_ParseTradingHours(QUOTELV_TRADING_HOURS *pTradingHours, char *pXml);

/**根据市场id获取开闭市信息
 *
 *  @param QUOTELV_OPER	*aOper			操作结构指针
 *  @param int				marketID		市场id
 *
 *  @return -
 *  @note
 *
 */
QUOTELV_TRADING_HOURS_ITEM* QuoteDataLv_GetTradingHoursItem(QUOTELV_TRADING_HOURS *pTradingHours, int marketID);
//========================================================================================

#endif
